Interactive Radar Chart of Environmental Impacts by Diet Group¶
Diet groups: Vegan, Vegetarian, Fish, Low meat consumption (Meat_low), Medium meat consumption (Meat_medium), High meat consumption (Meat_high)
Environmental indicators: Mean GHG emissions, Mean land use, Mean water scarcity, Mean eutrophication, Mean biodiversity impact, Mean water use, Mean acidification, Impact score
Features: interactive group comparison, polygon area visualization, group legend
InĀ [37]:
import pandas as pd
import plotly.graph_objects as go
# Load data
df = pd.read_csv("Results_21Mar2022.csv")
# Extract standardize diet group names
df['diet_group'] = df['grouping'].str.extract(r'^([a-zA-Z\s<>+\-0-9]+)_')[0].str.strip().str.lower()
df['diet_group'] = df['diet_group'].replace({
'veggie': 'Vegetarian',
'meat50-99': 'Meat_medium',
'meat <50': 'Meat_low',
'meat 100+': 'Meat_high'
})
# Select environmental indicators and calculate an overall impact score
metrics = ['mean_ghgs', 'mean_land', 'mean_watscar', 'mean_eut',
'mean_bio', 'mean_watuse', 'mean_acid']
df['impact_score'] = df[metrics].mean(axis=1)
metrics.append('impact_score')
# Define display labels for better readability
label_map = {
'mean_ghgs': 'Mean_GHGS',
'mean_land': 'Mean_LAND',
'mean_watscar': 'Mean_WATSCAR',
'mean_eut': 'Mean_EUT',
'mean_bio': 'Mean_BIO',
'mean_watuse': 'Mean_WATUSE',
'mean_acid': 'Mean_ACID',
'impact_score': 'Impact_SCORE'
}
# Calculate average environmental metrics by diet group
group_means = df.groupby('diet_group')[metrics].mean().reset_index()
# Create interactive radar chart
fig = go.Figure()
for _, row in group_means.iterrows():
fig.add_trace(go.Scatterpolar(
r=row[metrics].values,
theta=[label_map[m] for m in metrics],
fill='toself',
name=row['diet_group'].capitalize()
))
# Update chart layout
fig.update_layout(
polar=dict(radialaxis=dict(visible=True)),
title="Interactive Radar Chart of Environmental Impacts by Diet Group",
showlegend=True,
legend_title_text='Diet Group'
)
fig.show()
InĀ [31]:
fig.write_image("Radar_Chart.svg")